#! /usr/bin/env python
# _*_ encoding: UTF-8 _*_
# Author: Gordon.Wang

'''
面向对象，数据分析案例，主业务逻辑代码
实现步骤：
1、设计一个类，可完成数据的封装   #data_define.py
2、设计一个抽象类，定义文件读取的相关功能，并使用子类实现具体功能  #file_define.py
3、读取文件，生产数据对象
4、进行数据需求的逻辑计算(计算每一天的销售额
5、通过pyecharts进行图形绘制
'''

from file_define import FileReader,TextFileReader,JsonFileReader
from data_define import Record
from pyecharts.charts import Bar
from pyecharts.options import *
from pyecharts.globals import ThemeType
text_file_reader = TextFileReader("2011年1月销售数据.txt")     #读取文件内容
json_file_reader = JsonFileReader("2011年2月销售数据JSON.txt")  #读取文件内容
jan_data: list[Record] = text_file_reader.read_data()    #定义1月份的数据
feb_data: list[Record] = json_file_reader.read_data()    #定义2月份的数据
all_data: list[Record] = jan_data + feb_data             #把1和2月份的数据合并
data_dict = {}
for record in all_data:
    if record.date in data_dict.keys():
        data_dict[record.date] += record.money
    else:
        data_dict[record.date] = record.money
# print(data_dict)

bar = Bar(init_opts=InitOpts(theme=ThemeType.LIGHT))
bar.add_xaxis(list(data_dict.keys()))
bar.add_yaxis("销售额",list(data_dict.values()),label_opts=LabelOpts(is_show=False))
bar.set_global_opts(
    title_opts=TitleOpts(title="每日销售额")
)
bar.render("每日销售额歌柱图.html")